package com.tedu.day02.oop;

/**
 * 抽象类特点<补充>
 *           类：成员变量/成员方法/构造方法
 *        抽象类：成员变量/成员方法/构造方法
 *        成员变量：既可以是变量，也可以是常量
 *        构造方法：有，用于子类访问调用抽象【父】类的成员变量---赋值
 *        构造方法：既可以抽象，非抽象
 *        抽象方法与非抽象方法出现在抽象类问题：
 *        A：抽象方法   【重写】强制要求子类完成父类抽象方法
 *        B：非抽象方法 【拓展】 子类继承的事情，提高代码复用性
 *        抽象类关键字共存问题【方法】？
 *        abstract  private私有  冲突   属性本类访问       抽象继承
 *        abstract  final最终    冲突   不可改变的方法值    抽象继承
 *        abstrzct  static静态   无意义  抽象类访问静态方法  抽象继承

 *
 *
 */



abstract class Foo{}

//实现{子}类
class Goo extends Foo{
    public void show(){
        System.out.println("Goo show");
    }
    public  void method(){
        System.out.println("Goo method");

    }
}
public class 抽象类补充知识点 {
public static  void   main(String[]args){
    //抽象类--继承--多态性--造型---向上造型
    Foo f=new Goo();
    //1 实例化--子类构造器
System.out.println(f.toString());//30

// f.j=40;  不可修改
    
    //-----------------------------------

}
    /*
    拓展：abstract关键共存问题*/
    abstract class Aoo{
        //private abstract void show1(); 冲突
        //public final abstract void show2();冲突
        //public static abstract void show3();
        //无意义：静态方法需要加语法块{}，抽象方法
    }
}












